/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ita.escolaita.view;

import br.ita.escolaita.ejb.AvaliacaoEjbLocal;
import br.ita.escolaita.model.entity.Aluno;
import br.ita.escolaita.model.entity.Avaliacao;
import br.ita.escolaita.model.entity.Disciplina;
import br.ita.escolaita.model.entity.Serie;
import br.ita.escolaita.model.entity.Turma;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.ejb.EJB;
import javax.faces.component.UISelectOne;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Rafael
 */
public class NotasBean {

    @EJB
    private AvaliacaoEjbLocal avaliacaoEjb;
    private Serie serie;
    private Turma turma;
    private Aluno aluno;
    private Disciplina disciplina;
    private Set<Serie> series;
    private Set<Turma> turmas;
    private Set<Disciplina> disciplinas;
    private Avaliacao avaliacao;

    // Construtor default
    public NotasBean() {
    }

    public void serieChangeListener(ValueChangeEvent event) {
        if (turma != null)
            System.out.println("serieChangeListener:turma" + turma.getNome());
        else
            System.out.println("serieChangeListener:turma" + turma);
        UISelectOne select = (UISelectOne) event.getSource();
        serie = (Serie) select.getValue();
    }

    public List<SelectItem> getListaTurmas() {
        if (turma != null)
            System.out.println("getListaTurmas:turma" + turma.getNome());
        else
            System.out.println("getListaTurmas:turma" + turma);
        List<SelectItem> itens = new ArrayList<SelectItem>();
        if (serie != null && serie.getTurma() != null) {
            for (Turma t : serie.getTurma()) {
                SelectItem item = new SelectItem(t, t.getNome());
                itens.add(item);
            }
        }
        return itens;
    }

    public List<SelectItem> getListaDisciplinas() {
        if (turma != null)
            System.out.println("getListaDisciplinas:turma" + turma.getNome());
        else
            System.out.println("getListaTurmas:turma" + turma);
        List<SelectItem> itens = new ArrayList<SelectItem>();
        if (serie != null && serie.getDisciplina() != null) {
            for (Disciplina d : serie.getDisciplina()) {
                SelectItem item = new SelectItem(d, d.getNome());
                itens.add(item);
            }
        }
        return itens;
    }

    public void turmaChangeListener(ValueChangeEvent event) {
        UISelectOne select = (UISelectOne) event.getSource();
        turma = (Turma) select.getValue();
    }

    public List<SelectItem> getListaAlunos() {
        if (turma != null)
            System.out.println("getListaAlunos:turma" + turma.getNome());
        else
            System.out.println("getListaAlunos:turma" + turma);
        List<SelectItem> itens = new ArrayList<SelectItem>();
        if (turma != null && turma.getAluno() != null) {
            for (Aluno a : turma.getAluno()) {
                SelectItem item = new SelectItem(a, a.getNome());
                itens.add(item);
            }
        } else {
            SelectItem item = new SelectItem("", "vazio");
            itens.add(item);
        }
        return itens;
    }

    public void disciplinaChangeListener(ValueChangeEvent event) {
        UISelectOne select = (UISelectOne) event.getSource();
        disciplina = (Disciplina) select.getValue();
    }

    public void alunoChangeListener(ValueChangeEvent event) {
        //UISelectOne select = (UISelectOne) event.getSource();
        //turma = (Turma) select.getValue();
    }

    public String voltar() {
        HttpSession ses = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
        ses.removeAttribute("serie");
        ses.removeAttribute("turma");
        ses.removeAttribute("aluno");
        ses.removeAttribute("disciplina");
        ses.removeAttribute("avaliacao");
        ses.removeAttribute("notasBean");
        return "voltar";
    }

    public String salvar() {
        avaliacao.setDisciplina(disciplina);
        avaliacao.setAluno(aluno);
        avaliacaoEjb.incluirNota(avaliacao);
        avaliacao = new Avaliacao();
        serie = new Serie();
        turma = new Turma();
        aluno = new Aluno();
        return "sucesso";
    }

    // Getters and Setters
    public Serie getSerie() {
        return serie;
    }

    public void setSerie(Serie serie) {
        this.serie = serie;
    }

    public Set<Serie> getSeries() {
        return series;
    }

    public void setSeries(Set<Serie> series) {
        this.series = series;
    }

    public Set<Turma> getTurmas() {
        return turmas;
    }

    public void setTurmas(Set<Turma> turmas) {
        this.turmas = turmas;
    }

    public Set<Disciplina> getDisciplinas() {
        return disciplinas;
    }

    public void setDisciplinas(Set<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }

    public Turma getTurma() {
        return turma;
    }

    public void setTurma(Turma turma) {
        this.turma = turma;
    }

    public Aluno getAluno() {
        return aluno;
    }

    public void setAluno(Aluno aluno) {
        this.aluno = aluno;
    }

    public Disciplina getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(Disciplina disciplina) {
        this.disciplina = disciplina;
    }

    public Avaliacao getAvaliacao() {
        return avaliacao;
    }

    public void setAvaliacao(Avaliacao avaliacao) {
        this.avaliacao = avaliacao;
    }
}
